/*
 * @(#)WorkflowRecord.java
 *
 * Copyright (c) 2003 DCIVision Ltd
 * All rights reserved.
 *
 * This software is the confidential and proprietary information of DCIVision
 * Ltd ("Confidential Information").  You shall not disclose such Confidential
 * Information and shall use it only in accordance with the terms of the license
 * agreement you entered into with DCIVision Ltd.
 */
package com.dcivision.workflow.bean;

import java.sql.Timestamp;
import java.util.List;

import com.dcivision.framework.GlobalConstant;
import com.dcivision.framework.bean.AbstractBaseObject;

/**
 * WorkflowRecord.java
 * 
 * This class is the serializable bean reflecting business logic uses. It
 * represents the master workflow record only (without steps information)
 * 
 * @author Angus Shiu
 * @company DCIVision Limited
 * @creation date 30/07/2003
 * @version $Revision: 1.17 $
 */
public class WorkflowRecord extends AbstractBaseObject {
  
  public static final String REVISION = "$Revision: 1.17 $";
  
  static final long serialVersionUID = -3555050690161394437L;
  /** Indicates a pending workflow record */
  public static final String WORKFLOW_RECORD_PENDING = "P";
  /** Indicates a released workflow record */
  public static final String WORKFLOW_RECORD_RELEASE = "R";
  public static final String REQUEST_COME_FROM_APPLET = "A";  //request come from applet
  
  /** Indicates this workflow is interruptable */
  public static final String INTERRUPT_WORKFLOW_ALLOW_YES = "Y";
  /** Indicates this workflow is non-interruptable */
  public static final String INTERRUPT_WORKFLOW_ALLOW_NO = "N";
  public static final String REQUEST_COME_FROM_WEB = "W";  //request come from applet
  private String workflowCode = null;
  private String workflowVersion = null;
  private Integer workflowGroupID = null;
  private String status = null;
  private Timestamp startDate = null;
  private Timestamp endDate = null;
  private String description = null;
  private Integer workflowCategoryID = null;
  private String locationPath = null;
  private Integer rootID = null;
  private Integer parentID = null;
  
  private Integer relatedObjectID = null;
  private String relatedObjectType = null;
  private String relatedObjectName = null;
  
  private String nextStepDynamicAssignDueDate = null;
  private int nextStepDynamicAssignDueDateCount = 0;
  
  private String allowInterrupt = "N";
  private Integer interruptWorkflowRecordID = null;
  private String interruptSubmitter = null;
  private List nextStepAllowAssignStr = null;
  private String hasBindFormFistStep = GlobalConstant.FALSE;
  
  //binding form
  private List bindingFormList = null;
  private int bindingFormListSize = -1;
  //binding public folder
  private List bindingDmsFolderList = null;
  private int bindingDmsFolderListSize = -1;
  //binding profile 
  private List bindingProfileList = null;
  private int bindingProfileListSize = -1;
  
  // Presentation only
  private String workflowCategory = null;
  
  public WorkflowRecord() {
    super();
  }
  /**
   * @return Returns the workflowCode.
   */
  public String getWorkflowCode() { 
    return(this.workflowCode);
  }
  /**
   * @param workflowCode
   *          The workflowCode to set.
   */
  public void setWorkflowCode(String workflowCode) { 
    this.workflowCode = workflowCode;
  }
  /**
   * @return Returns the workflowVersion.
   */
  public String getWorkflowVersion() { 
    return(this.workflowVersion);
  }
  /**
   * @param workflowVersion
   *          The workflowVersion to set.
   */
  public void setWorkflowVersion(String workflowVersion) { 
    this.workflowVersion = workflowVersion;
  }
  /**
   * @return Returns the workflowGroupID.
   */
  public Integer getWorkflowGroupID() { 
    return(this.workflowGroupID);
  }
  /**
   * @param workflowGroupID
   *          The workflowGroupID to set.
   */
  public void setWorkflowGroupID(Integer workflowGroupID) { 
    this.workflowGroupID = workflowGroupID;
  }
  /**
   * @return Returns the status.
   */
  public String getStatus() { 
    return(this.status);
  }
  /**
   * @param status
   *          The status to set.
   */
  public void setStatus(String status) { 
    this.status = status;
  }
  /**
   * @return Returns the startDate.
   */
  public Timestamp getStartDate() { 
    return(this.startDate);
  }
  /**
   * @param startDate
   *          The startDate to set.
   */
  public void setStartDate(Timestamp startDate) { 
    this.startDate = startDate;
  }
  /**
   * @return Returns the endDate.
   */
  public Timestamp getEndDate() { 
    return(this.endDate);
  }
  /**
   * @param endDate
   *          The endDate to set.
   */
  public void setEndDate(Timestamp endDate) { 
    this.endDate = endDate;
  }
  /**
   * @return Returns the description.
   */
  public String getDescription() { 
    return(this.description);
  }
  /**
   * @param description
   *          The description to set.
   */
  public void setDescription(String description) { 
    this.description = description;
  }
  /**
   * @return Returns the workflowCategoryID.
   */
  public Integer getWorkflowCategoryID() { 
    return(this.workflowCategoryID);
  }
  /**
   * @param workflowCategoryID
   *          The workflowCategoryID to set.
   */
  public void setWorkflowCategoryID(Integer workflowCategoryID) { 
    this.workflowCategoryID = workflowCategoryID;
  }
  /**
   * @return Returns the workflowCategory.
   */
  public String getWorkflowCategory() {
    return(this.workflowCategory);
  }
  /**
   * @param workflowCategory
   *          The workflowCategory to set.
   */
  public void setWorkflowCategory(String workflowCategory) {
    this.workflowCategory = workflowCategory;
  }
  /**
   * @return Returns the relatedObjectID.
   */
  public Integer getRelatedObjectID() {
    return(this.relatedObjectID);
  }
  /**
   * @param relatedObjectID
   *          The relatedObjectID to set.
   */
  public void setRelatedObjectID(Integer relatedObjectID) {
    this.relatedObjectID = relatedObjectID;
  }
  /**
   * @return Returns the relatedObjectType.
   */
  public String getRelatedObjectType() {
    return(this.relatedObjectType);
  }
  /**
   * @param relatedObjectType
   *          The relatedObjectType to set.
   */
  public void setRelatedObjectType(String relatedObjectType) {
    this.relatedObjectType = relatedObjectType;
  }
  /**
   * @return Returns the relatedObjectName.
   */
  public String getRelatedObjectName() {
    return(this.relatedObjectName);
  }
  /**
   * @param relatedObjectName
   *          The relatedObjectName to set.
   */
  public void setRelatedObjectName(String relatedObjectName) {
    this.relatedObjectName = relatedObjectName;
  }
  /**
   * @return Returns the nextStepDynamicAssignDueDate.
   */
  public String getNextStepDynamicAssignDueDate(){
    return this.nextStepDynamicAssignDueDate;    
  }
  /**
   * @param nextStepDynamicAssignDueDate
   *          The nextStepDynamicAssignDueDate to set.
   */
  public void setNextStepDynamicAssignDueDate(String nextStepDynamicAssignDueDate){
    this.nextStepDynamicAssignDueDate = nextStepDynamicAssignDueDate;  
  }
  /**
   * @return Returns the nextStepDynamicAssignDueDateCount.
   */
  public int getNextStepDynamicAssignDueDateCount(){
    return this.nextStepDynamicAssignDueDateCount;
  }
  /**
   * @param nextStepDynamicAssignDueDateCount
   *          The nextStepDynamicAssignDueDateCount to set.
   */
  public void setNextStepDynamicAssignDueDateCount(int count){
    this.nextStepDynamicAssignDueDateCount = count;
  }
  /**
   * @return Returns the allowInterrupt.
   */
  public String getAllowInterrupt() {
    return allowInterrupt;
  }
  /**
   * @param allowInterrupt
   *          The allowInterrupt to set.
   */
  public void setAllowInterrupt(String allowInterrupt) {
    this.allowInterrupt = allowInterrupt;
  }
  /**
   * @return Returns the interruptWorkflowRecordID.
   */
  public Integer getInterruptWorkflowRecordID() {
    return interruptWorkflowRecordID;
  }
  /**
   * @param interruptWorkflowRecordID
   *          The interruptWorkflowRecordID to set.
   */
  public void setInterruptWorkflowRecordID(Integer interruptWorkflowRecordID) {
    this.interruptWorkflowRecordID = interruptWorkflowRecordID;
  }
  /**
   * @return Returns the interruptSubmitter.
   */
  public String getInterruptSubmitter() {
    return interruptSubmitter;
  }
  /**
   * @param interruptSubmitter
   *          The interruptSubmitter to set.
   */
  public void setInterruptSubmitter(String interruptSubmitter) {
    this.interruptSubmitter = interruptSubmitter;
  }
  /**
   * @return Returns the locationPath.
   */
  public String getLocationPath() {
    return locationPath;
  }
  /**
   * @param locationPath
   *          The locationPath to set.
   */
  public void setLocationPath(String locationPath) {
    this.locationPath = locationPath;
  }
  /**
   * @return Returns the rootID.
   */
  public Integer getRootID() {
    return rootID;
  }
  /**
   * @param rootID
   *          The rootID to set.
   */
  public void setRootID(Integer rootID) {
    this.rootID = rootID;
  }
  /**
   * @return Returns the parentID.
   */
  public Integer getParentID() {
    return parentID;
  }
  /**
   * @param parentID
   *          The parentID to set.
   */
  public void setParentID(Integer parentID) {
    this.parentID = parentID;
  }    
  /**
   * @return Returns the nextStepAllowAssignStr.
   */
  public List getNextStepAllowAssignStr() {
    return nextStepAllowAssignStr;
  }
  /**
   * @param nextStepAllowAssignStr
   *          The nextStepAllowAssignStr to set.
   */
  public void setNextStepAllowAssignStr(List nextStepAllowAssignStr) {
    this.nextStepAllowAssignStr = nextStepAllowAssignStr;
  }
  /**
   * @return Returns the bindingFormList.
   */
  public List getBindingFormList() {
    return bindingFormList;
  }
  /**
   * @param bindingFormList
   *          The bindingFormList to set.
   */
  public void setBindingFormList(List bindingFormList) {
    this.bindingFormList = bindingFormList;
  }
  /**
   * @return Returns the bindingFormListSize.
   */
  public int getBindingFormListSize() {
    return bindingFormListSize;
  }
  /**
   * @param bindingFormListSize
   *          The bindingFormListSize to set.
   */
  public void setBindingFormListSize(int bindingFormListSize) {
    this.bindingFormListSize = bindingFormListSize;
  }
  
	public String getHasBindFormFistStep() {
		return hasBindFormFistStep;
	}
  
	public void setHasBindFormFistStep(String hasBindFormFistStep) {
		this.hasBindFormFistStep = hasBindFormFistStep;
	}
  
	public List getBindingDmsFolderList() {
		return bindingDmsFolderList;
	}
  
	public void setBindingDmsFolderList(List bindingDmsFolderList) {
		this.bindingDmsFolderList = bindingDmsFolderList;
	}
  
	public int getBindingDmsFolderListSize() {
		return bindingDmsFolderListSize;
	}
  
	public void setBindingDmsFolderListSize(int bindingDmsFolderListSize) {
		this.bindingDmsFolderListSize = bindingDmsFolderListSize;
	}
  
	public List getBindingProfileList() {
		return bindingProfileList;
	}
  
	public void setBindingProfileList(List bindingProfileList) {
		this.bindingProfileList = bindingProfileList;
	}
  
	public int getBindingProfileListSize() {
		return bindingProfileListSize;
	}
  
	public void setBindingProfileListSize(int bindingProfileListSize) {
		this.bindingProfileListSize = bindingProfileListSize;
	}
}
